浅识大小端模式 | 您所在的位置:网站首页 › qt 判断文件大小 › 浅识大小端模式 |
产生大小端问题的原因
因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中存在不同的数据类型,他们所占的字节数各不相同。另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。 从软件角度来看,内存相对于一个大得字节数组,其中每个数组元素都是可寻址的. 目前有两种内存模式即 大端模式(big-endian)和小端模式(little-endian) 1、不同端模式的处理器进行数据传递时必须要考虑端模式的不同 2、在网络上传输数据时,由于数据传输的两端对应不同的硬件平台,采用的存储字节顺序可能不一致。网络字节顺序是大端模式。对于char型数据只占一个字节,无所谓大端和小端。而对于非char类型数据,必须在数据发送到网络上之前将其转换成大端模式。接收网络数据时按符合接受主机的环境接收,我们在写网络程序的时候要注意这方面的问题。 uint16_t htons(uint16_t hostshort); // 端口号 本地字节序转网络字节序 uint16_t ntohs(uint16_t netshort); // 端口号 网络字节序转本地字节序 |
CopyRight 2018-2019 实验室设备网 版权所有 |